#ifndef __ETHERNET_H
#define __ETHERNET_H

#define MAC_ADDRESS					0x0000E000	//MAC адрес - прошивается
#define NETPARAMS_ADDRESS			0x0000F000	//Сетевые параметры - при переходе в загрузчик из приложения

#define SERVER_CONFIG_TCP_PORT	10000
#define SERVER_CONFIG_UDP_PORT	10001

#define SERVER_TCP_PORT 		9999
#define SERVER_IP   			{192,168,1,101}

#define LOCAL_TCP_PORT			9999


typedef enum {TCP_IDLE,TCP_CONNECT,TCP_WAIT_CONNECT, TCP_BEFORE_SEND, TCP_SEND, TCP_WAIT_ANSWER, TCP_CLOSE} TcpStateT;

#define CONNECT_TIMEOUT	3000 	//таймаут подключения к серверу
#define REG_INTERVAL		10000	//Интервал между попытками регистрации на сервере
#define SEND_TIMEOUT		2000	//таймаут отправки данных
#define RECV_TIMEOUT		60000	//Таймаут приема данных
#define TCP_MTU					1460  //Максимум, что можно отправить в одном TCP пакете

//Протокол P32
#define P32_VER	2
#define P32_BUILD 1

#define P32_CMD_ASK		0x02
#define P32_CMD_REG		0x01
#define P32_CMD_DATA 	0x10

#define _MAC1          0x1E
#define _MAC2          0x30
#define _MAC3          0x6C
#define _MAC4          0xA2
#define _MAC5          0x45
#define _MAC6          0x5E


#define TCP_SEND_BUFSIZE	2*1024

/*
	Глобальные переменные
*/
extern U8 tcp_send_buffer[TCP_SEND_BUFSIZE];
extern U8 tcpSock;
extern U8 serverIP[4];
extern U16 serverPort;
extern U16 tcp_send_bufsize;
extern U16 tcp_send_done;
extern U64 tcpSendTime;
extern U8 needDHCP;
extern U64 dhcpTime;
extern U8 netParamsOK;
extern U8 *mac;
extern U8 udpActive;
/*
	Прототипы функций
*/
U16 tcp_callback (U8 soc, U8 event, U8 *ptr, U16 par);
void ethernet_init(void);
void sockets_init(void);
void tcpip_prc(void);
U8 tcp_send_data(U8 * data, U16 size, U8 sock);

void tcp_link_prc(void);
U8 tcp_before_send(void);
TcpStateT tcp_parse_data(void);
void dhcp_check (void);
U16 udpServer_callback (U8 socket, U8 *remip, U16 port, U8 *buf, U16 len);
U16 tcpServer_callback (U8 soc, U8 event, U8 *ptr, U16 par);
U8 udp_send_data(U8 * data, U16 size, U8 sock);



#endif
